package com.yt.common.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.Version;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @Description ：基础DTO类
 *
 * @DatetimeFormat是将String转换成Date，一般前台给后台传值时用
 *
 * @JsonFormat(pattern="yyyy-MM-dd") 将Date转换成String 一般后台传值给前台时（gson）
 *
 * @JsonFormat会让时间以0区时间显示。如果直接使用会少了8小时 修改为
 *
 * @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
 *
 * @JSONField(format = "yyyy-MM-dd HH:mm:ss")//fastjson
 *
 * @Author ： mx.li
 * @Date ： 2019/03/15 15:22
 */
@Data
public class BaseDTO {

    @TableId
    @JSONField(serializeUsing = ToStringSerializer.class)
    protected Long id;

    @Version
    @ApiModelProperty(value = "乐观锁")
    private Integer revision;

//    @ApiModelProperty("创建人ID")
//    @TableField("create_user_id")
//    protected Long createUserId;
//    @ApiModelProperty("更新人ID")
//    @TableField("update_user_id")
//    protected Long updateUserId;

    @ApiModelProperty("创建时间")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//    @TableField("createtime")
    @TableField("create_time")
    protected Date createTime;

    @ApiModelProperty("更新时间")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")//gosn
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//输入字符串
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")//fastjson
//    @TableField("updatetime")
    @TableField("update_time")
    protected Date updateTime;

}
